// pages/user-center/user-center.js
import { userApi, matchApi } from '../../services/api';

Page({

  /**
   * 页面的初始数据
   */
  data: {
    userInfo: null,
    profileInfo: null,
    statistics: {
      matchCount: 0,
      likeCount: 0,
      viewCount: 0
    },
    menuList: [
      {
        icon: 'box',
        text: '我的盲盒',
        path: '/pages/my-box/my-box'
      },
      {
        icon: 'heart',
        text: '我的收藏',
        path: '/pages/my-likes/my-likes'
      },
      {
        icon: 'history',
        text: '匹配记录',
        path: '/pages/match-history/match-history'
      },
      {
        icon: 'setting',
        text: '设置',
        path: '/pages/settings/settings'
      }
    ],
    showPageTransition: false
  },

  /**
   * 生命周期函数--监听页面加载
   */
  onLoad(options) {
    this.loadUserInfo();
    this.loadStatistics();
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {
    this.loadUserInfo();
    this.loadStatistics();
  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  onUnload() {

  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {
    Promise.all([
      this.loadUserInfo(),
      this.loadStatistics()
    ]).then(() => {
      wx.stopPullDownRefresh();
    }).catch(() => {
      wx.stopPullDownRefresh();
    });
  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  },

  async loadUserInfo() {
    try {
      // 先获取用户资料
      const profile = await userApi.getProfile();
      console.log('获取到的用户资料：', profile);
      
      // 获取存储的用户基本信息
      const userInfo = wx.getStorageSync('userInfo');
      
      if (!userInfo) {
        wx.redirectTo({
          url: '/pages/index/index'
        });
        return;
      }
      
      // 如果有资料，使用资料中的头像和昵称
      if (profile) {
        this.setData({ 
          userInfo: {
            ...userInfo,
            avatarUrl: profile.userInfo?.avatarUrl || userInfo.avatarUrl || '/pages/assets/images/default-avatar.png',
            nickname: profile.nickname || userInfo.nickName || '未设置昵称',
            gender: profile.userInfo?.gender || userInfo.gender || 0
          },
          profileInfo: {
            ...profile,
            // 确保显示完整的用户信息
            age: profile.age || '未填写',
            height: profile.height ? `${profile.height}cm` : '未填写',
            education: profile.education || '未填写',
            occupation: profile.occupation || '未填写',
            location: profile.location || '未填写'
          }
        });

        console.log('用户中心显示的用户信息：', this.data.userInfo);
        console.log('用户资料信息：', this.data.profileInfo);
      } else {
        this.setData({ 
          userInfo: {
            ...userInfo,
            avatarUrl: userInfo.avatarUrl || '/pages/assets/images/default-avatar.png',
            nickname: userInfo.nickName || '未设置昵称',
            gender: userInfo.gender || 0
          },
          profileInfo: {
            age: '未填写',
            height: '未填写',
            education: '未填写',
            occupation: '未填写',
            location: '未填写'
          }
        });
      }

    } catch (err) {
      console.error('获取用户信息失败', err);
      wx.showToast({
        title: '获取用户信息失败',
        icon: 'none'
      });
    }
  },

  async loadStatistics() {
    try {
      // 获取匹配历史总数
      const matchHistory = await matchApi.getHistory({ page: 1, pageSize: 1 });
      // 获取收藏列表总数
      const likeList = await matchApi.getLikes({ page: 1, pageSize: 1 });
      
      this.setData({
        statistics: {
          matchCount: matchHistory.total || 0,
          likeCount: likeList.total || 0,
          viewCount: 0 // 暂不实现被查看次数
        }
      });
    } catch (err) {
      console.error('获取统计信息失败', err);
      wx.showToast({
        title: '获取统计信息失败',
        icon: 'none'
      });
    }
  },

  handleMenuClick(e) {
    const { path } = e.currentTarget.dataset;
    wx.navigateTo({ url: path });
  },

  handleEditProfile() {
    // 直接跳转，不使用动画
    wx.navigateTo({
      url: '/pages/profile/profile?type=edit',
      fail: (err) => {
        console.error('跳转失败', err);
        wx.showToast({
          title: '跳转失败，请重试',
          icon: 'none'
        });
      }
    });
  },

  async handleLogout() {
    try {
      const { confirm } = await wx.showModal({
        title: '提示',
        content: '确定要退出登录吗？'
      });

      if (confirm) {
        // 清除本地存储
        wx.clearStorageSync();
        
        // 重定向到登录页
        wx.reLaunch({
          url: '/pages/index/index'
        });
      }
    } catch (err) {
      console.error('退出失败', err);
      wx.showToast({
        title: '退出失败，请重试',
        icon: 'none'
      });
    }
  }
})